/*
 * @Author: WuFeng <763467339@qq.com>
 * @Date: 2022-03-22 12:12:49
 * @LastEditTime: 2023-03-15 15:26:20
 * @LastEditors: WuFeng <763467339@qq.com>
 * @Description: 布局信息
 * @FilePath: \vue3-element-plus-web\src\store\modules\layout.js
 * @Copyright 版权声明
 */
import { SYSTEM_DEFAULT_LAYOUT } from '@/config'
/** @type {*} */
const layout = {
  state: {
    /**
     * @enum {Boolean} true: 登陆后可手动切换至某个角色，拥有当前所选角色的权限 ， false： 登陆后拥有所拥有所有角色权限的并集
     * @desc 可切换多角色
     */
    roleSwitch: SYSTEM_DEFAULT_LAYOUT.roleSwitch,
    /**
     * @description 布局类型
     * mixedMenuLayout: 混合 菜单布局（左侧 + 顶部）
     * leftMenuLayout: 左侧 菜单布局
     * topMenuLayout: 顶部 菜单布局
     */
    layoutType: SYSTEM_DEFAULT_LAYOUT.layoutType,
    // 是否展示多主题切换
    multilTheme: SYSTEM_DEFAULT_LAYOUT.multilTheme,
    // 是否展示多语言切换
    multilLanguage: SYSTEM_DEFAULT_LAYOUT.multilLanguage,
    /**
     * @description 系统主题 - 列表
     * defaultTheme: 默认主题
     * nightTheme: 夜间模式
     */
    sysThemeEnum: SYSTEM_DEFAULT_LAYOUT.themeEnum,
    /**
     * @description 系统主题
     * defaultTheme: 默认主题
     * nightTheme: 夜间模式
     */
    sysTheme: SYSTEM_DEFAULT_LAYOUT.defaultTheme
  },

  mutations: {
    // 设置布局方式
    SET_LAYOUT_TYPE: (state, val) => {
      state.layoutType = val
    },
    // 设置主题
    SET_SYS_THEME: (state, val) => {
      state.sysTheme = val
    }
  },

  actions: {
    // 设置布局方式
    SetLayoutType({ commit }, { type }) {
      return new Promise((resolve) => {
        commit('SET_LAYOUT_TYPE', type)
        resolve()
      })
    },
    // 设置主题
    SetSysTheme({ commit }, { theme }) {
      return new Promise((resolve) => {
        commit('SET_SYS_THEME', theme)
        resolve(theme)
      })
    }
  }
}

export default layout
